package Objects_package;

import java.util.Objects;

public class Objects_demo1 {
    public static void main(String[] args) {
        /*
        public static boolean equals (Object a, Object b)   先做非空判断，比较两个对象
        public static boolean isNull (Object obj)           判断对象是否为null，为null返回true，反之
        public static boolean nonNull (Object obj)          判断对象是否为null，跟isNull的结果相反
         */

        //1、创建学生类的对象
        Student s1 = null;
        Student s2 = new Student("张三", 23);

        //2、比较两个对象的属性值是否相同
//        if (s1 != null) {
//            boolean result = s1.equals(s2);
//            System.out.println(result);
//        } else {
//            System.out.println("调用者为空");
//        }

        boolean result = Objects.equals(s1, s2);
        System.out.println(result);
        //细节：
        //1、方法的底层会判断s1是否为null，如果为null，直接返回false
        //2、如果s1不为null，那么就利用s1再次调用equals方法
        //3、此时s1是Student类型，所以最终还是会调用Student中的equals方法
        //  如果没有重写，比较地址值，如果重写了，就比较属性值


        //public static boolean isNull (Object obj)      判断对象是否为null，为null返回true，反之
        Student s3 = new Student();
        System.out.println(Objects.isNull(s3));
        System.out.println(Objects.isNull(s1));

        System.out.println(Objects.nonNull(s3));
        System.out.println(Objects.nonNull(s1));
    }
}
